An implementation of the BLAKE2 hash functions.
Usage
Blake2b
can be used in the following way:
# extern crate hex_literal;
# extern crate blake2;
#
Also see RustCrypto/hashes readme.
Variable output size
If you need variable sized output you can use VarBlake2b
and VarBlake2s
which support variable output sizes through VariableOutput
trait. Input
trait has to be imported as well.
use VarBlake2b;
use ;
let mut hasher = new.unwrap;
hasher.input;
hasher.variable_result
Message Authentication Code (MAC)
BLAKE2 can be used as a MAC without any additional constructs:
use Blake2b;
use Mac;
let mut hasher = new_varkey.unwrap;
hasher.input;
// `result` has type `MacResult` which is a thin wrapper around array of
// bytes for providing constant time equality check
let result = hasher.result;
// To get underlying array use `code` method, but be carefull, since
// incorrect use of the code value may permit timing attacks which defeat
// the security provided by the `MacResult`
let code_bytes = result.code;
// To verify the message it's recommended to use `verify` method
let mut hasher = new_varkey.unwrap;
hasher.input;
// `verify` return `Ok(())` if code is correct, `Err(MacError)` otherwise
hasher.verify.unwrap;
Acknowledgment
Based on the blake2-rfc crate.